package juc.completablefuture.methods.and;

/**
 * @ClassName RunAfterBothExample
 * @PackageName completablefuture.methods.and
 * @projectName myThread
 * @Description 
 * @Author games
 * @Date 2025/8/27 下午4:53
 * @Version 1.0
 */
import java.util.concurrent.CompletableFuture;

/**
 * 作用：两个任务都执行完成后，执行下一步操作（Runnable）。
 * 返回值：void。
 */
public class RunAfterBothExample {
    /**
     * 主方法：演示CompletableFuture的runAfterBoth方法的使用
     * runAfterBoth方法会在两个 CompletableFuture 都完成后执行指定的操作
     * @param args 命令行参数
     */
    public static void main(String[] args) {
        // 创建第一个异步任务，返回字符串"Hello"
        CompletableFuture<String> cf1 = CompletableFuture.supplyAsync(() -> "Hello");
        // 创建第二个异步任务，返回字符串"World"
        CompletableFuture<String> cf2 = CompletableFuture.supplyAsync(() -> "World");

        // 当cf1和cf2都完成后，执行指定的Runnable任务，打印输出信息
        cf1.runAfterBoth(cf2, () -> System.out.println("Both tasks completed")); // 输出: Both tasks completed
    }
}